package part18;

import java.io.FileOutputStream;
import java.nio.channels.FileLock;
import java.util.concurrent.TimeUnit;

/**
 * @author wcj
 * @Date 2021/6/4 16:54
 * @Version 1.0
 */
public class Part1829 {

    /**
     * 对映射文件进行加锁操作，因为同一时间可能有java的线程，还有os的进程都对文件进行操作，因此我们需要对文件进行加锁
     * 调用FileChannel的tryLock()方法进行非阻塞式的加锁，release（）进行锁的释放
     *
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        FileOutputStream out = new FileOutputStream("file.txt");
        FileLock fileLock = out.getChannel().tryLock();
        if (fileLock != null) {
            System.out.println("Locke file");
            TimeUnit.MILLISECONDS.sleep(100);
            fileLock.release();
            System.out.println("Release Lock");
        }
        out.close();
    }
}
